package com.simon.cdc.sql;


import com.simon.cdc.event.ChangeEvent;

/**
 * DELETE语句生成器
 */
final class DeleteStatement {
    private static final String TEMPLATE = "DELETE FROM %s WHERE %s";

    private final ChangeEvent event;

    DeleteStatement(ChangeEvent event) {
        this.event = event;
    }

    /**
     * 构建并返回一个符合预期格式的字符串
     * 该方法使用TEMPLATE模板，结合事件相关的表名和主键条件，生成一个查询字符串
     * 主要目的是为了构造一个基于给定事件信息的数据库查询语句
     *
     * @return 根据事件信息构建的查询语句字符串
     */
    String build() {
        // 使用String.format根据TEMPLATE模板格式化字符串
        // 其中，event.getTableName()获取事件相关的表名
        // new WhereClause(event.getPrimaryKeys()).build()构建主键条件子句
        return String.format(TEMPLATE,
                event.getTableName(),
                new WhereClause(event.getPrimaryKeys()).build());
    }
}